/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modela;

import java.util.LinkedList;
import java.util.Random;
import javax.swing.Icon;
import javax.swing.JLabel;

/**
 *
 * @author Jose
 */
public class Cliente extends Thread{
    int Cantidad;
    int PosX; //Estos dependen del punto de entrada en la interfaz gráfica
    int PosY;    
    private Icon Icono;
    public JLabel Imagen;    
    private int DesX,DesY;
    private LinkedList<int[]> ListaMov;   
    
    public Cliente(Icon imagen, int PosX_Inicial, int PosY_Inicial){
        Random gente=new Random();        
        Cantidad=gente.nextInt(4)+1;        
        PosX=PosX_Inicial;
        PosY=PosY_Inicial;
        Icono=imagen;
        Imagen=new JLabel();
        Imagen.setText(Cantidad+"");
        Imagen.setIcon(Icono);
        Imagen.setVisible(true);
        Imagen.setSize(Imagen.getPreferredSize());
        Imagen.setLocation(PosX, PosY);
        //Imagen.setSize(PrincipalApp.Dimension_Imagenes, PrincipalApp.Dimension_Imagenes);
        DesX=DesY=0;
        ListaMov=new LinkedList();
    }
    
    /**
     * Agrega una solicitud de desplazamiento en la coordenada X igual al parametro enviado
     * @param x Desplazamiento deseado en X, puede ser positivo o negativo
     */
    public void MoverPersonaX(int x){
        if(x!=0)
            ListaMov.add(new int[]{0,x});
    }
    
    /**
     * Agrega una solicitud de desplazamiento en la coordenada Y igual al parametro enviado
     * @param y Desplazamiento deseado en Y, puede ser positivo o negativo
     */
    public void MoverPersonaY(int y){
        if(y!=0)
            ListaMov.add(new int[]{1,y});
    }

    @Override
    public void run(){
        while(true){
            if(DesX==0 && DesY==0){
                if(!ListaMov.isEmpty()){
                    if(ListaMov.get(0)[0]==0){
                        DesX=ListaMov.get(0)[1];                        
                    }else{
                        DesY=ListaMov.get(0)[1];                        
                    }
                    ListaMov.remove(0);
                }
            }else{
                if(DesX!=0){
                    try { 
                        if(DesX>0){
                            PosX++;
                            DesX--;
                            Imagen.setLocation(PosX, PosY);
                        }else{
                            PosX--;
                            DesX++;
                            Imagen.setLocation(PosX, PosY);
                        }                    
                        sleep(20);
                    } catch (InterruptedException ex) {
                        ex.printStackTrace();
                    }
                }else if(DesY!=0){
                    try { 
                        if(DesY>0){
                            PosY++;
                            DesY--;
                            Imagen.setLocation(PosX, PosY);
                        }else{
                            PosY--;
                            DesY++;
                            Imagen.setLocation(PosX, PosY);
                        }                    
                        sleep(20);
                    } catch (InterruptedException ex) {
                        ex.printStackTrace();
                    }
                } 
            }                       
        }
    }
    
}
